package Demo;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: DELL
 * Date: 2023-01-05
 * Time: 18:04
 */
// 饿汉模式的 饿单例模式 实现
    // 保证 Singleton 这个类只能创建出来一个实例
    // 在类加载的阶段就把实例创建出来了(类加载是比较靠前的)
class Singleton {

    // static 可以保证这个实例instance唯一
    //         保证这个实例在一定时机被创建出来
    // 让 instance 变成类属性 --类属性是在类对象上的,类对象又是唯一实例(只是在加载阶段创建出一个实例)
    // 构造方法是private 外面代码中无法 new
    // 类对象如果是多例,那么类属性也是多列 不唯一
    // 先将实例创建出来
    private static Singleton instance = new Singleton();

    // 如果需要使用这个唯一的实例, 统一通过 Singleton.getInstance来获取
    public static Singleton getInstance() {

        return instance; // 只涉及读操作 不存在线程安全问题
    }

    // 为了避免Singleton 类不小心被复制出来多份
    // 把构造方法设为 private 在类外面就无法通过 new 的方式来创建这个 Singlton实例了
    private Singleton() {

    }
}
public class Thead_Demo11 {
    public static void main(String[] args) {
        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
        System.out.println(s1==s2);
    }
}
